<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <button onclick="songlai()">宋来复</button>  <button onclick="wang()">王官微</button>
    <button onclick="sendMsg()">发布消息</button>
</body>
<script>
    //1. 定义公众平台
     let bus = {
        // 存放订阅者列表
        list:[],

        //2. 订阅者
        // callback是订阅者传递的回调函数
        on(callback){
            // 对象中的this指向的是当前这个对象
            console.log(this)
            // 将订阅者函数bus.on添加到list列表中（向列表中添加callback）
           this.list.push(callback);
           console.log(this.list)
           console.log("订阅成功")
        },

        //3.发布者（接收emit）
        emit(msg){
            console.log(msg)
            console.log(this.list)
            // 遍历列表
            this.list.forEach(item=>{
                item(msg)
            })
        }
     }


     function songlai(){
        // 订阅消息  （在js里面只有回调函数才可以接收到消息）
        bus.on((msg)=>{
            console.log("收到消息："+msg)
        });
     }
     function wang(){
        // 订阅消息
        bus.on((msg)=>{
            console.log("王官微收到消息："+msg)
        })
     }
    //  发布消息 （调用emit）
    function sendMsg(){
        bus.emit("大家好，我是前端小李")
    }
</script>
</html>